#include<iostream>
#include"hfsolver_ho.h"
#include"hfsolver_m.h"
#include"system_hf.h"
#include"system_m.h"

using std::cout;
using std::cin;
using std::endl;

int main()
{
  // //System_Tz_HO h("../../../../public/n3lo_vlowk/sp3.dat","../../../../public/n3lo_vlowk/v3.dat");
  System_Tz_HO h("./spox16.dat","./vint2.dat");
  // System_Tz_HO h("/home/wuqiang/project/vlowk/sppn.dat","/home/wuqiang/project/vlowk/vpn.dat");
  h.setup();
  // h.printOrbitals();

  int A,Z;
  cin>>A>>Z;
  SHFSolver_HO hf(&h,A,Z);
  hf.iter();
  hf.calEnergy();
  cout<<hf.Energy<<endl;
  hf.printOrbitals(10);

  // int A=4;
  // int Z=2;
  // System_Tz_HF hhf(&h,A,Z);
  // hhf.setup();
  // cout<<hhf.HFenergy<<endl;

  System_M hm(&h);
  hm.setup();
  //  hm.printOrbitals();
  // cout<<hm.Groups.size()<<endl;
  // for(int i=0;i<hm.Groups.size();i++)
  //   {
  //     cout<<"dim:\t"<<hm.Groups[i].size()<<endl;
  //     for(int j=0;j<hm.Groups[i].size();j++)
  // 	{
  // 	  cout<<hm.Groups[i][j]<<"\t";
  // 	}
  //     cout<<endl<<endl;
  //   }
  // cout<<hm.get1B(A,0,0)<<endl;
  // cout<<hm.get2BV(A,0,1,0,1)<<endl;
  HFSolver_M hfm(&hm,A,Z);
  hfm.iter();
  hfm.calEnergy();
  cout<<hfm.Energy<<endl;
  hfm.printOrbitals(20);  
  return 0;
}
